﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DAL.Entity;

namespace DAL.Persistencia
{
    public class CidadeDAL
    {
        private NewTierraEntities Con = new NewTierraEntities();

        //Gravar registro de cidade na tabela
        public void Salvar(Cidade c)
        {
            try
            {
                //Rotina prontas para banco
                Con.AddToCidades(c);//insere cidade
                Con.SaveChanges();

            }
            catch
            {
                
                throw;
            }
        }

        //Método para Excluir o Cidade na base
        public void Excluir(Cidade c)
        {
            try
            {
                Con.DeleteObject(c); //Prepara a deleção da cidade
                Con.SaveChanges(); //Executa a transação (commit)
            }
            catch
            {
                throw;
            }
        }

        //Metodo para listar todos os Cidade cadastradas
        public List<Cidade> ListarTodos()
        {
            try
            {
                //SQL -> select * from Cidades
                return Con.Cidades.ToList();
            }
            catch
            {
                throw;
            }
        }

        //Método para obter 1 cidade pelo Id
        public Cidade ObterPorId(int IdCidade)
        {
            try
            {
                //select * from Cidade where IdCidade = ?
                return Con.Cidades.Where(c => c.CID_id == IdCidade).Single();

                //Single -> Retorna apenas 1 Registro e dá erro para qualquer
                //          resultado diferente de 1 Registro.
            }
            catch
            {
                throw;
            }
        }

        //Método para atualizar os dados da Cidade
        public void Atualizar(Cidade registroNovo)
        {
            try
            {
                //Buscar na base de dados registro antigo
                Cidade registroAntigo = ObterPorId(registroNovo.CID_id);

                //Atualizando os dados
                registroAntigo.CID_cod_Iata = registroNovo.CID_cod_Iata;
                registroAntigo.CID_nome = registroNovo.CID_nome;
                registroAntigo.CID_uf = registroNovo.CID_uf;
                registroAntigo.PAIS_id = registroNovo.PAIS_id;

                //executa o commit
                Con.SaveChanges();
            }
            catch
            {
                throw;
            }

        }
 


    }
}
